package com.mm.base.config.web;

import cn.hutool.core.date.DateUtil;
import org.springframework.core.convert.converter.Converter;
import org.springframework.stereotype.Component;

import java.util.Date;

/**
 * △设置后台向前台传递Date日期格式
 * 方式1：配置文件修改
 * 配置文件配置application.yml：
 * spring:
 *   # 配置日期格式化
 *   jackson:
 *     date-format: yyyy-MM-dd HH:mm:ss  #时间戳统一转换为指定格式
 *     time-zone: GMT+8  # 时区修改为东8区
 * 方式2：在实体类上加注解
 * 在pattern上设置自己需要的格式
 * @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")
 * private Date createTime;
 *
 * △设置前台向后台传递Date日期格式
 * 方式1：在实体类上加注解
 * 注解将yyyy-MM-dd的形式转换为Date数据
 * @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
 * private Date birthday;
 * 方式2：SpringBoot配置全局日期格式转换器
 *
 * @Description
 * @Date 2024/3/14 下午3:03
 * @Author yanglin
 **/
//@Component
public class DateConverterConfig implements Converter<String, Date> {

    @Override
    public Date convert(String source) {
        String[] patterns = new String[]{
                "yyyy-MM-dd","yyyy-MM-dd hh:mm:ss","yyyy/MM/dd","yyyy/MM/dd hh:mm:ss",
                "MM-dd-yyyy","dd-MM-yyyy"};
        Date date = DateUtil.parse(source, patterns);
        return date;
    }

    @Override
    public <U> Converter<String, U> andThen(Converter<? super Date, ? extends U> after) {
        return Converter.super.andThen(after);
    }
}
